Dear All:
在這年頭表單領頭羊肯定就是google表單,但是問卷調查後想要抓取google表單內的資料是什麼時,除了自行登入查看表單結果!但是我們怎麼不直接抓取資料到我們系統後台呢?我們就來Do it。
船長們可以使用 Google Sheets API,因為 Google 表單的回應會儲存在 Google Sheets 中。
以下是具體步驟與 Python 程式碼範例,展示如何讀取表單回應並在後台顯示:
前往 Google Cloud Console 並啟用 Google Sheets API。
創建憑證(OAuth 2.0 Client IDs),下載 credentials.json,用於後續的 API 認證。
你需要安裝 Google 提供的官方函式庫來處理 API 認證和互動。執行以下命令來安裝套件:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
這個範例會讀取 Google 表單對應的 Google Sheets 內容,並將回應資料顯示在後台(即命令行或終端機)中。
import os.path
import pickle
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
# 如果只需要讀取,使用只讀範圍
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']
# 替換成你的 Google Sheets 試算表 ID
SPREADSHEET_ID = 'your_spreadsheet_id_here'
# 通常表單回應會儲存在 "表單回應 1" 的範圍
RANGE_NAME = 'Form Responses 1'
def main():
creds = None
# 檢查是否有保存的 token
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# 如果沒有 token 或已過期,重新登入
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# 保存 token 以便下次使用
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
# 連接 Google Sheets API
service = build('sheets', 'v4', credentials=creds)
# 讀取表單回應
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME).execute()
values = result.get('values', [])
if not values:
print('No data found.')
else:
print('Form Responses:')
for row in values:
# 每一行表示一個回應
print(row)
if __name__ == '__main__':
main()
1.把下載的 credentials.json 文件放在與程式碼相同的目錄中。
2.用你的 Google Sheets ID 替換 SPREADSHEET_ID。試算表的 ID 是 Google Sheets 網址中的一部分。例如:
https://docs.google.com/spreadsheets/d/1wPQA1234567abcdeFGH2J6gfGHI789kL0/edit#gid=0
3.你可以在命令行運行這段程式碼,第一次運行會要求你登入並授權 Google Sheets API。
python your_script.py
授權完成後,Google 表單中的回應將會顯示在終端機中,每個回應都是一行。
結果範例
假設你的 Google 表單有 3 個問題:
名字
年齡
喜歡的顏色
那麼程式運行後的輸出會類似這樣:
Form Responses:
['Timestamp', 'Name', 'Age', 'Favorite Color']
['2024/09/17 12:34:56', 'Alice', '30', 'Blue']
['2024/09/17 13:45:01', 'Bob', '25', 'Green']
['2024/09/17 14:56:23', 'Charlie', '22', 'Red']
每一行代表一個表單回應,包含提交時間和對應的回答。
我們後續會將此技能加入到我們專案中!大家可以在自己本機上操作看看喔。
今天就先打完收工!
進度更新表: